Cuando se analizan las características más subestimadas de TypeScript, una que a menudo pasa desapercibida es la afirmación as const. Esta característica es increíblemente útil en varios escenarios y brinda importantes beneficios para los desarrolladores.
Para comenzar, definamos qué hace as const. Imagina que tienes un objeto como este:
const routes = { home: "/home", profile: "/profile", notifications: "/notification", };
Si pasa el cursor sobre las propiedades de las rutas, notará que están escritas como una cadena. Por ejemplo, route.home se escribe como una cadena, no como "/home". Esto se debe a que TypeScript supone que estas propiedades pueden cambiar, por lo que las infiere como cadenas mutables.
Ahora, considere una función que debería aceptar solo estas rutas específicas. Podrías definir los tipos así:
function changeRoute(route: "home" | "profile" | "notifications") { // navigate to route }
Este enfoque funciona, pero es repetitivo y propenso a errores. Si agrega una nueva ruta, debe actualizar la definición de tipo de la función, lo cual no es ideal.
Aquí es donde entra en juego as const. Al usar as const, puedes hacer que el objeto sea inmutable y TypeScript inferirá los tipos literales en lugar de solo cadenas.
const routes = { home: "/home", profile: "/profile", notifications: "/notification", } as const;
Ahora, rutas.home se escribe como "/home", rutas.notificaciones como "/notificaciones", y así sucesivamente. Esta inmutabilidad garantiza que estas propiedades no se puedan cambiar y TypeScript reconoce sus valores específicos.
Integremos as const en una función:
function changeRoute(route: typeof routes[keyof typeof routes]) { // navigate to route }
Aquí, typeof route obtiene el tipo de objeto de ruta y keyof typeof route extrae las claves, lo que da como resultado los tipos exactos de los valores de ruta. Esto hace que la función se adapte a cualquier cambio en el objeto de rutas sin necesidad de actualizaciones repetitivas.
Otro aspecto poderoso de as const es cómo permite la extracción de tipos. Por ejemplo:
type Routes = (typeof routes)[keyof typeof routes];
Este tipo de definición extrae dinámicamente los valores del objeto de rutas, haciendo que la función sea más fácil de mantener y reduciendo la redundancia.
La aserción as const en TypeScript es una característica versátil y poderosa que puede mejorar significativamente la seguridad de tipos y reducir la redundancia en su código. Al hacer que los objetos sean inmutables y permitir una inferencia de tipos precisa, simplifica el mantenimiento y la ampliación de las bases de código. ¡Pruébelo y verá cómo puede mejorar sus proyectos de TypeScript!
¡Feliz codificación!
[Divulgación: este artículo es un esfuerzo colaborativo que combina mis propias ideas con la ayuda de ChatGPT para mejorar la articulación.]
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3